SQL Avg()函数 | 您所在的位置:网站首页 › sql语句 除法 › SQL Avg()函数 |
在本教程中,我们将演示如何使用SQL AVG函数来获取集合的平均值。 1. SQL AVG函数简介SQL AVG函数是一个聚合函数,用于计算集合的平均值。 以下说明了SQL AVG函数的语法: AVG([ALL|DISTINCT] expression)如果使用ALL关键字,AVG函数将获取计算中的所有值。 默认情况下,无论是否指定,AVG函数都使用ALL。 如果明确指定DISTINCT关键字,AVG函数将仅在计算中采用唯一值。 例如,有一组数据集(1,2,3,3,4)并将AVG(ALL)应用于此集合,AVG函数将执行以下计算: (1+2+3+3+4)/5 = 2.6但是,如果指定:AVG(DISTINCT)将按如下方式处理: (1+2+3+4)/4 = 2.5 2. SQL AVG函数示例将使用示例数据库中的employees表来演示SQL AVG函数的工作原理。 以下图片说明了employees表的结构: mysql> desc employees; +---------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+--------------+------+-----+---------+----------------+ | employee_id | int(11) | NO | PRI | NULL | auto_increment | | first_name | varchar(20) | YES | | NULL | | | last_name | varchar(25) | NO | | NULL | | | email | varchar(100) | NO | | NULL | | | phone_number | varchar(20) | YES | | NULL | | | hire_date | date | NO | | NULL | | | job_id | int(11) | NO | MUL | NULL | | | salary | decimal(8,2) | NO | | NULL | | | manager_id | int(11) | YES | MUL | NULL | | | department_id | int(11) | YES | MUL | NULL | | +---------------+--------------+------+-----+---------+----------------+ 10 rows in set要计算所有员工的平均工资,请将AVG函数应用于salary列,如下所示: SELECT AVG(salary) FROM employees;执行上面示例代码,得到以下结果: +-------------+ | AVG(salary) | +-------------+ | 8060 | +-------------+ 1 row in set应用DISTINCT运算符来查看结果是否发生了变化: SELECT AVG(DISTINCT salary) FROM employees;执行上面示例代码,得到以下结果: +----------------------+ | AVG(DISTINCT salary) | +----------------------+ | 7845.454545 | +----------------------+ 1 row in set如上结果有改变,因为一些员工有相同的薪水。要将结果舍入为2位小数,请使用ROUND函数,如下所示: SELECT ROUND(AVG(DISTINCT salary), 2) FROM employees;要计算值子集的平均值,在SELECT语句中添加WHERE子句。 例如,要计算部门ID为5中员工的平均工资,使用以下查询: SELECT AVG(DISTINCT salary) FROM employees WHERE department_id = 5;以下语句返回工作岗位ID为6的员工的平均工资: SELECT AVG(salary) FROM employees WHERE job_id = 6;执行上面示例代码,得到以下结果: +-------------+ | AVG(salary) | +-------------+ | 7920 | +-------------+ 1 row in set带有GROUP BY子句的SQL AVG示例 要计算组的平均值,将AVG函数与GROUP BY子句一起使用。 例如,以下语句返回各部门的员工和员工的平均工资。 SELECT department_id, AVG(salary) FROM employees GROUP BY department_id;执行上面示例代码,得到以下结果: 可以使用inner join子句将employees表与departments表连接起来以获取部门名称数据: SELECT e.department_id, department_name, AVG(salary) FROM employees e INNER JOIN departments d ON d.department_id = e.department_id GROUP BY e.department_id;执行上面示例代码,得到以下结果: 带有ORDER BY子句的SQL AVG示例 要对包含AVG结果的结果集进行排序,请使用AVG函数与ORDER BY子句,如下所示: SELECT e.department_id, department_name, AVG(salary) FROM employees e INNER JOIN departments d ON d.department_id = e.department_id GROUP BY e.department_id ORDER BY AVG(salary) DESC;执行上面查询语句,得到以下结果: SQL AVG与HAVING子句示例 要过滤分组,请AVG函数中使用HAVING子句。 例如,以下语句获取平均薪水小于5000的部门: SELECT e.department_id, department_name, AVG(salary) AS avgsalary FROM employees e INNER JOIN departments d ON d.department_id = e.department_id GROUP BY e.department_id HAVING avgsalary 上一篇: SQL聚合函数 下一篇: SQL Count()函数 |
CopyRight 2018-2019 实验室设备网 版权所有 |